<%--
  Created by IntelliJ IDEA.
  User: 13367
  Date: 2022/10/28
  Time: 17:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>SAS测试计划</title>
    <!-- 注意：项目正式环境请勿引用该地址 -->
    <link rel="stylesheet" href="${pageContext.request.contextPath}/static/layui-v2.7.6/layui/css/layui.css" >

<%--    <style type="text/css">--%>
<%--        .layui-table-cell{--%>
<%--            height:auto!important;--%>
<%--            white-space:normal;--%>
<%--        }--%>
<%--    </style>--%>

</head>
<body>
<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-xs" lay-event="edit" >编辑</a>
<%--    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>--%>
    <a class="layui-btn layui-btn-xs" lay-event="share" >二维码</a>
</script>

<script type="text/html" id="toolbarDemo">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" lay-event="addStu">添加</button>
        <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
        <button class="layui-btn layui-btn-sm" lay-event="getData">获取当前页数据</button>
        <button class="layui-btn layui-btn-sm" lay-event="isAll">是否全选</button>
    </div>
</script>

<form class="layui-form" action=""  id="saveUserForm" style="display: none"  lay-filter="updateUserFormFilter">
    <input type="hidden" name="id" >

    <form class="layui-form" enctype="multipart/form-data" action="" >

        <div class="registerbox-title">SAS测试计划</div>
        <div class="layui-form-item">
            <div class="layui-form-item pass"  disabled="none">
                <label class="layui-form-label">计划id</label>
                <div class="layui-input-inline">
                    <input type="text" name="id" autocomplete="off" disabled="none" class="layui-input" id="id">
                </div>
            </div>
            <label class="layui-form-label">计划名</label>
            <div class="layui-input-inline">
                <input type="text" name="planename" id="planename" lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div id="test-range">
            <div class="layui-form-item " >
                <div class="layui-inline">
                    <label class="layui-form-label">开始时间</label>
                    <div class="layui-input-inline">
                        <input type="text" name="begintime"  lay-verify="required" placeholder="请输入开始时间" autocomplete="off" class="layui-input" id="begintime">
                    </div>
                </div>
                <div class="layui-form-item " >
                    <div class="layui-inline">
                        <label class="layui-form-label">结束时间</label>
                        <div class="layui-input-inline">
                            <input type="text" name="endtime" lay-verify="required" placeholder="请输入结束时间" autocomplete="off" class="layui-input" id="endtime">
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="layui-form-item pass" >
            <label class="layui-form-label">邀请码</label>
            <div class="layui-input-inline">
                <input  type="text" name="code" id="code" lay-verify=""
                        autocomplete="off" class="layui-input"  >
                <label>不满意？<a href="#"  onclick="getcode();" id="loginRegister">重新生成邀请码</a>
                    <%--                    <button type="button" onclick="getcode();" class="layui-btn layui-btn-warm">邀请码</button>--%>            </div>
        </div>

        <div class="layui-form-item" >
            <label class="layui-form-label">状态</label>
            <div class="layui-input-block">
                <input type="hidden" name="status" id="status" value="1"/>
                <input type="checkbox" name="statusswitch" checked lay-skin="switch" lay-filter="switchStatus" lay-text="启用|禁用">
            </div>
        </div>

        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="formSaveUser">保存</button>
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
    </form>
</form>

<%----%>

<%--二维码开始--%>
<div id="qrcode" style="display: none"></div>
<%--存放二维码图片的地方--%>
<div style="display: none"><img src="" id="erweima" style="margin:0 auto;"></div>
<%--&lt;%&ndash;二维码结束&ndash;%&gt;--%>

<%--查询条件--%>
<form class="layui-form" action="">
    <div class="layui-inline">
        <label class="layui-form-label">计划名</label>
        <div class="layui-input-inline">
            <input type="text" name="planename" placeholder="请输入计划名查询" autocomplete="off" class="layui-input">
        </div>
    </div>

    <div class="layui-inline">
        <div class="layui-input-inline">
            <button class="layui-btn" lay-submit lay-filter="formDemo">查询</button>
            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>
</form>
<table class="layui-hide" id="test" lay-filter = "test"></table>
<!-- 注意：项目正式环境请勿引用该地址 -->
<script src="${pageContext.request.contextPath}/static/jquery-3.6.1.min.js"></script>
<script src="${pageContext.request.contextPath}/static/html2canvas.min.js"></script>
<script src="${pageContext.request.contextPath}/static/layui-v2.7.6/layui/layui.js"></script>
<script src="${pageContext.request.contextPath}/static/layui-v2.7.6/layui/qrcode.js"></script>
<script>


        layui.use(['table','layer','form','jquery','laydate'], function(){
            var table = layui.table;
            var layer = layui.layer;
            var form = layui.form;
            var $ = layui.jquery;

            var laydate=layui.laydate;
            var namestatus=true;

            laydate.render({
                elem: '#test-range' //开始时间和结束时间所在 input 框的父选择器
                //设置开始日期、日期日期的 input 选择器
                ,range: ['#begintime', '#endtime'] //数组格式为 layui 2.6.6 开始新增
            });

            table.render({
                // element  元素
                elem: '#test'
                ,page:true
                ,limit:10
                ,limits:[2,4,6,8,10]
                ,toolbar: '#toolbarDemo'
                ,url:'${pageContext.request.contextPath}/tSasPlane/queryAll' //  表格了里面所需要的数据就是一个list里面有很多的map、对象
                ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，layui 2.2.1 新增
                //,totalRow: true // 开启合计行
                //传过来的数据进行处理  laydata
                ,parseData: function (res) {
                    return {
                        "code":res.code,
                        "msg":res.msg,
                        "count": res.data.total,//从返回的json数据中取出总行数
                        "data": res.data.list//返回的json数据有两层，layui不支持多层数据，所以是res.list
                    }
                }
                ,cols: [[
                    {type: 'checkbox', fixed: 'left'}
                    // field 后面跟的内容  必须跟后台传过来的数据里面的map 的key保持一致
                    ,{field:'id', title: 'ID', sort: true}
                    ,{field:'planename', title: '计划名'} //width 支持：数字、百分比和不填写。你还可以通过 minWidth 参数局部定义当前单元格的最小宽度，layui 2.2.1 新增
                    ,{field:'username', title: '创建人',templet:function(d){return '<span>'+d.user.username+'</span>';}}
                    ,{field:'begintime', title: '开始时间', sort: true}
                    ,{field: 'endtime',title: '结束时间',sort: true}
                    ,{field: 'code',title: '邀请码',sort: true}
                    ,{field: 'status',title: '状态',sort: true,templet:function (d){
                        if (d.status==1){
                            return '<input type="checkbox" checked value="'+d.id+'" lay-skin="switch" lay-filter="switchStatus1" lay-text="启用|禁用">';
                        }else {
                            return '<input type="checkbox" value="'+d.id+'" lay-skin="switch" lay-filter="switchStatus1" lay-text="启用|禁用">';
                        }
                        }}
                    ,{fixed: 'right', title:'操作', width: 125, minWidth: 125, toolbar: '#barDemo'}
                ]]
            });

            // 监听单元格里面的开关
            form.on('switch(switchStatus1)', function(obj){
                //alert(JSON.stringify(obj));
                var status=1;
                if(this.checked){
                    status=1
                }else{
                    status=2;
                }
                // 修改这条数据的状态即可
                $.ajax({
                    type:"post",
                    data:{id:obj.value,status:status},
                    url:"${pageContext.request.contextPath}/tSasPlane/updates",
                    success:function(d){
                        if(d.code==0){
                            layer.msg("修改成功",{icon:"1"});
                            table.reload('test');
                        }
                    }
                })

            });

            // 工具栏事件
            table.on('toolbar(test)', function(obj){
                var uid = obj.config.uid;
                var checkStatus = table.checkStatus(uid);
                var othis = lay(this);
                switch(obj.event){
                    case 'getCheckData':
                        var data = checkStatus.data;
                        layer.alert(layui.util.escape(JSON.stringify(data)));
                        break;
                    case 'getData':
                        var getData = table.getData(id);
                        console.log(getData);
                        layer.alert(layui.util.escape(JSON.stringify(getData)));
                        break;
                    case 'isAll':
                        layer.msg(checkStatus.isAll ? '全选': '未全选')
                        break;
                    case 'addStu':
                        //邀请码调用
                        getcode();
                        $("#saveUserForm")[0].reset();
                        $(".pass").css("display","block");
                        layer.open({
                            type: 1,
                            area: ['500px', '400px'],
                            offset: '100px',
                            content:$("#saveUserForm"),
                            cancel: function(index, layero){
                                layer.close(index);
                                $("#saveUserForm").hide();
                                return false;
                            }
                        });
                        break;
                };
            });

            //触发单元格工具事件
            //监听行工具事件
            table.on('tool(test)', function(obj){
                var data = obj.data;
                //console.log(obj)
                if(obj.event === 'edit'){
                    // $(".pass").css("display","none");
                    layer.open({
                        type: 1,
                        area: ['500px', '400px'],
                        offset: '100px',
                        content:$("#saveUserForm"),
                        cancel: function (index, layero) {
                            layer.close(index);
                            $("#saveUserForm").hide();
                            return false;
                        }
                    });
                    form.val('updateUserFormFilter',data);

                    // 给开关赋值
                    if(data.status==1){
                        data.statusswitch=true;
                    }else{
                        data.statusswitch=false;
                    }
                    form.val('updateUserFormFilter',data);
                    $("#demo1").prop("src",data.imgpath);
                    //刷新页面
                    table.reload('test');
                }

                if(obj.event === 'share'){
                    var url="http://43.138.80.195:8080${pageContext.request.contextPath}/sas/saslogin.jsp";

                    //生成100*100(宽度100，高度100)的二维码
                    $('#qrcode').qrcode({
                        render: "canvas", //也可以替换为table
                        width: 100,
                        height: 100,
                        foreground: "green",
                        background: "#FFF",
                        text: url
                        // $("#output").qrcode(encodeURI("http://中文中文"));//使用encodeURI进行转码
                    });

                    //
                    $("#qrcode").css("display","block");
                    createImg();
                    layer.open({
                        type: 1,
                        area: ['400', '400'],
                        offset: '100px',
                        content:$('#qrcode'),
                        cancel: function(index, layero){
                            layer.close(index);
                            $("#qrcode").empty();
                            $("#qrcode").css("display","none");
                            $("#erweima").attr("src","");
                            return false;
                        },
                        btn:['下载图片'],
                        //绑定第一个按钮的点击事件
                        yes: function(index) {
                            //下载图片到本地
                            // var a = document.createElement('a');
                            // var event = new MouseEvent('click');
                            // a.download = "分享投票二维码";
                            // //a.href = url;
                            // //a.dispatchEvent(event);
                            var oImg =$('#erweima').attr("src");
                            var oA = document.createElement("a");
                            oA.download = '';// 设置下载的文件名，默认是'下载'
                            oA.href = oImg;
                            document.body.appendChild(oA);
                            oA.click();
                            // oA.remove(); // 下载之后把创建的元素删除
                        }
                    });
                }

            });
                // 监听开关
                form.on("switch(switchStatus)",function (d){
                    // 选中的时候  状态的值1   未选中的时候  2
                    var flage=$(this).prop("checked");
                    if(flage==true){
                        $("#status").val(1);
                    }else{
                        $("#status").val(2);
                    }
                })

                //提交表单
                // Layui提交表单 监听提交  data代表的是form表单里面的所有的内容
                form.on('submit(formSaveUser)', function(data){
                    var id=$("#id").val();
                    var planename=$("#planename").val();
                    var begintime=$("#begintime").val();
                    var endtime=$("#endtime").val();
                    var code=$("#code").val();
                    var status=$("#status").val();
                    alert(status);
                    var params = {};
                    params.id=id;
                    params.planename=planename;
                    params.begintime=begintime;
                    params.endtime=endtime;
                    params.code=code;
                    params.status=status;
                    if(namestatus){
                        $.ajax({
                            url:"${pageContext.request.contextPath}/tSasPlane/add",
                            type:"post",
                            dataType:"JSON",
                            data:params,//表单里所有数据
                            success:function (ret){
                                if (ret.data == true){
                                    //关闭所有弹框
                                    layer.closeAll();
                                    //刷新页面
                                    table.reload('test');
                                    $("#saveUserForm").hide();
                                }
                            }
                        })
                    }
                    return false;
                });

                <%--if (obj.event === 'del'){--%>
                <%--    layer.confirm('真的删除该问题吗', function(index){--%>
                <%--        console.log(obj);--%>
                <%--        //obj.del(); //删除对应行（tr）的DOM结构--%>
                <%--        // 发送ajax请求删除指定数据--%>
                <%--        $.ajax({--%>
                <%--            url:"${pageContext.request.contextPath}/tSasPlane/del",--%>
                <%--            type:"POST",--%>
                <%--            dataType:"JSON",--%>
                <%--            data:{"qid":obj.data.qid},--%>
                <%--            success:function (ret) {--%>
                <%--                layer.closeAll();--%>
                <%--                if(ret.data == "false"){--%>
                <%--                    layer.closeAll();--%>
                <%--                    layer.alert("删除失败",{icon: 1})--%>
                <%--                    // layer.closeAll();//关闭对话框--%>
                <%--                    table.reload('demo', {--%>
                <%--                        page: {--%>
                <%--                            curr: 1 //重新从第 1 页开始--%>
                <%--                        }--%>
                <%--                    });--%>
                <%--                }else {--%>
                <%--                    layer.alert("删除成功",{icon: 1})--%>
                <%--                }--%>
                <%--                //刷新页面--%>
                <%--                table.reload('test')--%>
                <%--            }--%>
                <%--        })--%>

                <%--       --%>
                <%--    })--%>
                <%--};--%>

            //模糊查询
            form.on('submit(formDemo)', function(data){
                console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
                console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
                console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
                //alert(JSON.stringify(data.field))
                table.reload('test', {
                    // where: { //请求参数（注意：这里面的参数可任意定义，并非下面固定的格式）
                    //     searchUserid: data.field.userid //排序字段
                    //     ,searchUsername:data.field.username//排序方式
                    //     }
                    where:data.field,
                    page: {
                        curr: 1 //重新从第 1 页开始
                    },
                });
                return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
            });

            var createImg = function () {
                new html2canvas(document.getElementById('qrcode'), {
                    width: 100,
                    height: 100,
                    backgroundColor: "transparent",        //背景图片透明
                    allowTaint: true,    //跨域
                    useCORS: true         //跨域
                }).then(canvas => {
                    // canvas为转换后的Canvas对象
                    let oImg = new Image();
                    oImg = canvas.toDataURL('image/png');  // 导出图片
                    $("#erweima").attr('src', oImg);


                    // var oA = document.createElement("a");
                    // oA.download = '';// 设置下载的文件名，默认是'下载'
                    // oA.href = oImg;
                    // document.body.appendChild(oA);
                    // oA.click();
                    // oA.remove(); // 下载之后把创建的元素删除
                });
            }
            //邀请码
            getcode=async function(){
                // 生成的邀请码不能重复
                // 定义fpa的邀请码是以f未开头
                var code1=Math.floor(Math.random()*10)+"";
                var code2=Math.floor(Math.random()*10)+"";
                var code3=Math.floor(Math.random()*10)+"";
                var code4=Math.floor(Math.random()*10)+"";
                var code="f"+code1+code2+code3+code4;
                // $("#code").val(code);
                var status=false;
                //名字在数据库中不存在时候添加  存在就不能添加
                await $.post("${pageContext.request.contextPath}/tSdsPlane/",{code:code},function(d){
                    if(d.data==true){
                        status=true;
                    }else{
                        status=false;
                    }
                })

                if(status==true){
                    $("#code").val(code);
                }else{
                    getcode();
                }

            }

        });


</script>
</body>
</html>
